// 布尔类型
let falg = null;
falg = null;
let num = 0b1010;
num = undefined;
let arr = [1, 2, 3, 4];
let arr1 = [2, 3, 4, 5];
let arr3 = [1, '2', 333];
let str = 'asdasdasdasdasdasdas';
let arr4 = str.split(',');
console.log(arr4);
var Color;
(function (Color) {
    Color[Color["Green"] = 3] = "Green";
    Color[Color["Red"] = 4] = "Red";
    Color[Color["Bule"] = 5] = "Bule";
})(Color || (Color = {}));
var Sex;
(function (Sex) {
    Sex[Sex["\u7537"] = 0] = "\u7537";
    Sex[Sex["\u5973"] = 1] = "\u5973";
})(Sex || (Sex = {}));
let Mycolor = Color[4];
console.log(Mycolor);
let sex = Sex.男;
console.log(sex);
let myArr = [];
myArr = [1, 2, 3, '2'];
// object 类型
// 定义一个函数，参数是object类型，返回值也是object类型
function getObj(obj) {
    console.log(obj);
    return {};
}
//console.log(getObj({ a: 1, b: 2 }))
// console.log(getObj('123'));
// console.log(getObj(new String('123')))
// console.log(getObj(String));
// 联合类型
// 需求1：定义一个函数得到一个数字或字符串
function getString(str) {
    return str;
}
console.log(getString(123));
// 需求2:定义一个函数得到一个数字或字符串的长度
function getStrLength(content) {
    // return content.toString().length
    // 如果str本身就是string类型，那么是没有必要调用toString()方法的
    if (content.length) {
        return content.length;
    }
    else {
        return content.toString().length;
    }
}
console.log(getStrLength('123123123213'));
/*
通过类型断言的方式可以告诉编译器,"相信我，我知道自己在干什么"，类型断言好比其他语言里面的类型转换，
但是不进行特殊的数据检查和解构，他没有运行时的影响，
只是在编译阶段起作用。typeScript会假设你，程序猿已经进行了必须的检查

类型断言的两种形式，其一是“尖括号语法”，另一个为 as 语法


类型断言(Type Assertion):可以用手动指定一个值的类型
语法:
    方式一:<类型>值
    方式二: 值 as 类型 tsx中只能用这种方式
*/
// 类型推断
let txt = 100; //number 类型
console.log(txt);
// 定义变量时赋值了，推断为对应的类型
let a1 = 1;
// 定义变量时没有赋值，推断为any类型
let a2; // any类型
a2 = 10;
a2 = '111111';
